'''
    By challen
    自动存取款机管理系统
    登陆login user
    1.查询余额
    2.存款操作
    4.取款操作
    5.退出用户
'''
#三个用户的账号信息作为数据源，用户信息包含：密码，姓名，余额，用户等级
bank_database= [
    {'id':'1001','user_password':'200101','name': 'zhanggoudan', 'bank_balance': 1002, 'user_grade': 'VIP用户'},
    {'id':'1002','user_password':'200202','name': 'liyu', 'bank_balance': 3058, 'user_grade': '白金用户'},
    {'id':'1003','user_password':'200303','name': 'goerzi', 'bank_balance': 2994, 'user_grade': '黄金用户'}
]

#1.登陆检查功能，定义验证id账号密码匹配函数
def login_user_check():
    '''
    验证登录密码匹配的函数
    '''
    global bank_database
    user_id=input('请输入您的卡片账号')
    user_password=input('请输入您的6位密码：')
    for NewUser in range (len (bank_database)):
        #遍历判断密码是否与表内一个用户密码进行匹配
        if user_id== bank_database[NewUser]['id'] and user_password == bank_database[NewUser]['user_password']:
            print('尊贵的{} {},您已登录成功!请进行下列操作'.format(bank_database[NewUser]['user_grade'],bank_database[NewUser]['name']))
            print ('——' * 33)
            return NewUser
        else:
            #错误重新输入
            print('输入的账号密码有误，请重新输入')
            break


#2.查询余额功能
def check_balance():
    """
    查询余额功能
    """
    global bank_database
    print('您的账户余额还有{}元'.format(bank_database[NewUser]['bank_balance']))


#3.存款功能
def add_balance():
    '''
    存款功能
    '''
    global bank_database
    add_money=int(input('请输入存款金额：'))
    #对用户的余额进行添加
    bank_database[NewUser]['bank_balance']+=add_money
    print('尊贵的用户，您的专属账户已成功存入{},目前余额为{}'.format(add_money,bank_database[NewUser]['bank_balance']))


#4.取款功能
def draw_balance():
    """
    取款功能
    """
    global bank_database
    draw_money= int (input ('请输入取款金额：'))
    #判断余额与金额的大小，判定是否可以取出
    if bank_database[NewUser]['bank_balance']>=draw_money:
        bank_database[NewUser]['bank_balance']-=draw_money
        print ('您已成功取款{},目前余额剩余{}'.format (draw_money, bank_database[NewUser]['bank_balance']))
    if bank_database[NewUser]['bank_balance'] < draw_money:
        print('您的余额不足！')

#5.退出系统
def loginOut():
    user_choose=input('请问是否登出，是请按1，否请按2，请输入：')
    while user_choose=='1':
        print('已成功登出，请取回你的卡片')
        break
    else:
        print('请继续操作系统')


#定义一个欢迎界面函数
def welcome_user():
    print ("===================================================================")
    print ("                       欢迎登陆深圳中通银行                          ")
    print ("===================================================================")

#定义一个用户界面函数
def user_interface():
    '''
    用户界面的函数
    '''
    print ("{0:1}{1:<30}{2:>30}{0:1}".format ("|", "1.查询账户", "2.存款"))
    print('\n')
    print ("{0:1}{1:<30}{2:>30}{0:1}".format ("|", "3.取款", "4.退出账户"))
    print ("=" * 67)

#用户交互界面
while True:
    #欢迎界面
    welcome_user()
    #用户登陆界面并全局引入NewUser
    NewUser=login_user_check()
    #检查是否账号密码无误，再进行登陆后续操作
    if NewUser is None:
        continue
    while True:
        user_interface()
        user_key=input('请输入业务操作')
        if user_key=='1':
            check_balance()
        elif user_key=='2':
            add_balance()
        elif user_key=='3':
            draw_balance()
        elif user_key=='4':
            loginOut()
            break

